<!DOCTYPE html>
<html>

  <head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">

  <title>GcsSloop</title>
  <meta name="description" content="嗨，我是 GcsSloop，一名来自2.5次元的魔法师，Android自定义View系列文章作者，非著名程序员。">
  <meta name="author" content="GcsSloop">
  <meta name="keywords" content="">
  <meta name="关键字" content="">
  

  <meta name="twitter:card" content="summary">
  <meta name="twitter:title" content="GcsSloop">
  <meta name="twitter:description" content="嗨，我是 GcsSloop，一名来自2.5次元的魔法师，Android自定义View系列文章作者，非著名程序员。">
  <meta name="twitter:keywords" content="">
  
  <meta property="og:type" content="article">
  <meta property="og:title" content="GcsSloop">
  <meta property="og:description" content="嗨，我是 GcsSloop，一名来自2.5次元的魔法师，Android自定义View系列文章作者，非著名程序员。">
  <meta name="og:keywords" content="">

  <meta name="theme-color" content="#343434">
  
  <link rel="icon" type="image/png" href="https://raw.githubusercontent.com/GcsSloop/gcssloop.github.io/master/assets/siteinfo/favicon.png" />
  <link href="https://raw.githubusercontent.com/GcsSloop/gcssloop.github.io/master/assets/siteinfo/favicon.png" rel="shortcut icon" type="image/png">
  
  <link href="//netdna.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css" rel="stylesheet">
  <link rel="stylesheet" href="/css/main.css">

  <link rel="canonical" href="http://www.gcssloop.com/page/5/">
  <link rel="alternate" type="application/rss+xml" title="GcsSloop" href="http://www.gcssloop.com/feed.xml">
  
  <meta name="google-site-verification" content="Z_g58PkzRAyBMxkqrcDdWrTBK8oOWM-7rUHauhLNF2E" />
  <meta name="baidu-site-verification" content="kUtTXCKaZs" />
  <meta name="baidu-site-verification" content="6DuDv3aaJX" />
  
  <!--阅读次数统计-->
  <script async src="https://busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js"> </script>
  
  <!--Fuck Weixin and Baidu-->
  <meta http-equiv="Cache-Control" content="no-transform">
  <meta http-equiv=”Cache-Control” content=”no-siteapp” />
  <meta name="applicable-device" content="pc,mobile">
  <meta name="HandheldFriendly" content="true"/>

  <!-- Google Ad -->
  <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
  <script>
    (adsbygoogle = window.adsbygoogle || []).push({
      google_ad_client: "ca-pub-2767831356529421",
      enable_page_level_ads: true
    });
  </script>

</head>


  <body>

    <span class="mobile btn-mobile-menu">
        <i class="fa fa-list btn-mobile-menu__icon"></i>
        <i class="fa fa-angle-up btn-mobile-close__icon hidden"></i>
    </span>
    
    <header class="panel-cover " style="background-image: url('/assets/siteinfo/background-cover.jpg')">
  <div class="panel-main">

    <div class="panel-main__inner panel-inverted">
    <div class="panel-main__content">

        <a href="/#blog" title="前往 GcsSloop 的主页" class="blog-button"><img src="/assets/siteinfo/avatar.jpg" width="80" alt="GcsSloop logo" class="panel-cover__logo logo" /></a>
        <h1 class="panel-cover__title panel-title"><a href="/#blog" title="link to homepage for GcsSloop" class="blog-button">GcsSloop</a></h1>

        
        <span class="panel-cover__subtitle panel-subtitle">Just do IT later.</span>
        
        <hr class="panel-cover__divider" />
        <p class="panel-cover__description">嗨，我是 GcsSloop，一名来自2.5次元的魔法师，Android自定义View系列文章作者，非著名程序员。</p>
        <hr class="panel-cover__divider panel-cover__divider--secondary" />
        
        
        <p class="panel-cover__description">欢迎来到我的魔法世界!</p>
        
        
        <div class="navigation-wrapper">
          <div>
            <nav class="cover-navigation cover-navigation--primary">
              <ul class="navigation">
                <li class="navigation__item"><a href="/#blog" title="访问博客" class="blog-button">博客</a></li>
                
                  
                    <li class="navigation__item"><a href="https://github.com/GcsSloop" target="_blank" title="GcsSloop's GitHub">GitHub</a></li>
                  
                  
                
                  
                    <li class="navigation__item"><a href="/timeline" title="博客目录">目录</a></li>
                  
                  
                
                  
                    <li class="navigation__item"><a href="https://xiaozhuanlan.com/u/GcsSloop" target="_blank" title="小专栏">专栏</a></li>
                  
                  
                
                  
                    <li class="navigation__item"><a href="/category/customview" title="自定义View教程目录">自定义控件</a></li>
                  
                  
                
                  
                    <li class="navigation__item"><a href="/friends" title="友链">友链</a></li>
                  
                  
                
              </ul>
            </nav>
          </div>
          
          <div><nav class="cover-navigation navigation--social">
  <ul class="navigation">

  
  <!-- Weibo -->
  <li class="navigation__item">
    <a href="http://weibo.com/GcsSloop" title="@GcsSloop 的微博" target="_blank">
      <i class='social fa fa-weibo'></i>
      <span class="label">Weibo</span>
    </a>
  </li>
  

  
  <!-- Github -->
  <li class="navigation__item">
    <a href="https://github.com/GcsSloop" title="@GcsSloop 的 Github" target="_blank">
      <i class='social fa fa-github'></i>
      <span class="label">Github</span>
    </a>
  </li>
  
  
  
  <!-- Twitter -->
  <li class="navigation__item">
    <a href="http://twitter.com/GcsSloop" title="@GcsSloop" target="_blank">
      <i class='social fa fa-twitter'></i>
      <span class="label">Twitter</span>
    </a>
  </li>
  

    

  

  
  <!-- RSS -->
  <li class="navigation__item">
    <a href="/feed.xml" rel="author" title="RSS" target="_blank">
      <i class='social fa fa-rss'></i>
      <span class="label">RSS</span>
    </a>
  </li>
  

  
  <!-- Email -->
  <li class="navigation__item">
    <a href="mailto:GcsSloop@gmail.com" title="发邮件给我">
      <i class='social fa fa-envelope'></i>
      <span class="label">Email</span>
    </a>
  </li>
  

  
  <!-- Copyright -->
  <li class="navigation__item">
    <a href="http://choosealicense.online" title="选择版权"  target="_blank">
      <i class="social fa fa-copyright"></i>
      <span class="label">版权</span>
    </a>
  </li>
  
  
  </ul>
</nav>
</div>
        </div>
      </div>
    </div>
    
    
    <div class="panel-cover--overlay cover-slate"></div>
    
  </div>
</header>


    <div class="content-wrapper">
        <div class="content-wrapper__inner">
            <div class="main-post-list hidden">

  <ol class="post-list">
    <!--目录-->
    
    <!--置顶-->
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
    <!--普通文档流-->
    
    
      <li>
          <!--正常文档-->
          
          <h2 class="post-list__post-title post-title"><a href="/customview/Canvas_Convert" title="访问 安卓自定义View进阶-Canvas之画布操作">安卓自定义View进阶-Canvas之画布操作</a></h2>
          <p class="excerpt">上一篇Canvas之绘制基本图形中我们了解了如何使用Canvas绘制基本图形，本次了解一些基本的画布操作。本来想把画布操作放到后面部分的，但是发现很多图形绘制都离不开画布操作，于是先讲解一下画布的基本操作方法。一.Canvas的常用操作速查表            操作类型      相关API      备注                  绘制颜色      drawColor, drawRGB, drawARGB      使用单一颜色填充整个画布              绘制基本形状      d...&hellip;</p>
          <div class="post-list__meta"><time datetime="2016-01-28 00:00:00 +0800" class="post-list__meta--date date">2016-01-28</time> &#8226; <span class="post-list__meta--tags tags">CustomView</span> <a class="btn-border-small" href=/customview/Canvas_Convert>继续阅读</a></div>
          <hr class="post-list__divider" />
          
      </li>
    
    
    
      <li>
          <!--正常文档-->
          
          <h2 class="post-list__post-title post-title"><a href="/customview/Canvas_BasicGraphics" title="访问 安卓自定义View进阶-Canvas之绘制图形">安卓自定义View进阶-Canvas之绘制图形</a></h2>
          <p class="excerpt">在上一篇自定义View分类与流程中我们了解自定义View相关的基本知识，不过，这些东西依旧还是理论，并不能拿来(zhuang)用(B), 这一次我们就了解一些能(zhaung)用(B)的东西。在本篇文章中，我们先了解Canvas的基本用法，最后用一个小示例来结束本次教程。一.Canvas简介Canvas我们可以称之为画布，能够在上面绘制各种东西，是安卓平台2D图形绘制的基础，非常强大。一般来说，比较基础的东西有两大特点:  1.可操作性强：由于这些是构成上层的基础，所以可操作性必然十分强大。  2.比较难用：...&hellip;</p>
          <div class="post-list__meta"><time datetime="2016-01-21 00:00:00 +0800" class="post-list__meta--date date">2016-01-21</time> &#8226; <span class="post-list__meta--tags tags">CustomView</span> <a class="btn-border-small" href=/customview/Canvas_BasicGraphics>继续阅读</a></div>
          <hr class="post-list__divider" />
          
      </li>
    
    
    
      <li>
          <!--正常文档-->
          
          <h2 class="post-list__post-title post-title"><a href="/customview/CustomViewProcess" title="访问 安卓自定义View进阶-分类与流程">安卓自定义View进阶-分类与流程</a></h2>
          <p class="excerpt">本章节为什么要叫进阶篇？(虽然讲的是基础内容)，因为从本篇开始，将会逐渐揭开自定义View的神秘面纱，每一篇都将比上一篇内容更加深入，利用所学的知识能够制作更加炫酷自定义View，就像在台阶上一样，每一篇都更上一层，帮助大家一步步走向人生巅峰，出任CEO，迎娶白富美。 误，是帮助大家更加了解那些炫酷的自定义View是如何制作的，达到举一反三的效果。自定义View绘制流程函数调用链(简化版)一.自定义View分类我将自定义View分为了两类(sloop个人分类法，非官方)：1.自定义ViewGroup自定义Vi...&hellip;</p>
          <div class="post-list__meta"><time datetime="2016-01-16 00:00:00 +0800" class="post-list__meta--date date">2016-01-16</time> &#8226; <span class="post-list__meta--tags tags">CustomView</span> <a class="btn-border-small" href=/customview/CustomViewProcess>继续阅读</a></div>
          <hr class="post-list__divider" />
          
      </li>
    
    
    
      <li>
          <!--正常文档-->
          
          <h2 class="post-list__post-title post-title"><a href="/customview/Color" title="访问 安卓自定义View基础-颜色">安卓自定义View基础-颜色</a></h2>
          <p class="excerpt">简要介绍安卓中的颜色相关内容，包括颜色的定义，创建颜色的几种方式，以及颜色的混合模式等。一.简单介绍颜色安卓支持的颜色模式：            颜色模式      备注                  ARGB8888      四通道高精度(32位)              ARGB4444      四通道低精度(16位)              RGB565      屏幕默认模式(16位)              Alpha8      仅有透明通道(8位)      PS：其中字母表示通...&hellip;</p>
          <div class="post-list__meta"><time datetime="2016-01-11 00:00:00 +0800" class="post-list__meta--date date">2016-01-11</time> &#8226; <span class="post-list__meta--tags tags">CustomView</span> <a class="btn-border-small" href=/customview/Color>继续阅读</a></div>
          <hr class="post-list__divider" />
          
      </li>
    
    
    
      <li>
          <!--正常文档-->
          
          <h2 class="post-list__post-title post-title"><a href="/customview/AngleAndRadian" title="访问 安卓自定义View基础-角度与弧度">安卓自定义View基础-角度与弧度</a></h2>
          <p class="excerpt">安卓中角度(angle)与弧度(radian)的有关问题。一.前言1.为什么讲这个？在我们自定义View，尤其是制作一些复杂炫酷的效果的时候，实际上是将一些简单的东西通过数学上精密的计算组合到一起形成的效果。这其中可能会涉及到画布的相关操作(旋转)，以及一些正余弦函数的计算等，这些内容就会用到一些角度、弧度相关的知识。2.为什么对角的描述存在角度与弧度两种单位？简单来说就是为了方便，为了精确描述一个角的大小引入了角度与弧度的概念。由于两者进制是不同的(角度是60进制，弧度是10进制),在合适的地方使用合适的单...&hellip;</p>
          <div class="post-list__meta"><time datetime="2016-01-06 00:00:00 +0800" class="post-list__meta--date date">2016-01-06</time> &#8226; <span class="post-list__meta--tags tags">CustomView</span> <a class="btn-border-small" href=/customview/AngleAndRadian>继续阅读</a></div>
          <hr class="post-list__divider" />
          
      </li>
    
    
    
      <li>
          <!--正常文档-->
          
          <h2 class="post-list__post-title post-title"><a href="/customview/CoordinateSystem" title="访问 安卓自定义View基础-坐标系">安卓自定义View基础-坐标系</a></h2>
          <p class="excerpt">一.屏幕坐标系和数学坐标系的区别由于移动设备一般定义屏幕左上角为坐标原点，向右为x轴增大方向，向下为y轴增大方向，所以在手机屏幕上的坐标系与数学中常见的坐标系是稍微有点差别的，详情如下：（PS：其中的∠a 是对应的，注意y轴方向！）实际屏幕上的默认坐标系如下：  PS: 假设其中棕色部分为手机屏幕二.View的坐标系注意：View的坐标系统是相对于父控件而言的.getTop();       //获取子View左上角距父View顶部的距离getLeft();      //获取子View左上角距父View左侧...&hellip;</p>
          <div class="post-list__meta"><time datetime="2016-01-05 00:00:00 +0800" class="post-list__meta--date date">2016-01-05</time> &#8226; <span class="post-list__meta--tags tags">CustomView</span> <a class="btn-border-small" href=/customview/CoordinateSystem>继续阅读</a></div>
          <hr class="post-list__divider" />
          
      </li>
    
    
    
      <li>
          <!--正常文档-->
          
          <h2 class="post-list__post-title post-title"><a href="/customview/taiji" title="访问 二十多行代码画太极">二十多行代码画太极</a></h2>
          <p class="excerpt">一个然并卵的自定义View实例，觉得很有趣就做了一个试试，效果看起来貌似还是挺不错的，代码也非常简单。如果想系统的学习自定义View，可以参考: 安卓自定义View教程目录完成效果图技术基础这一篇内容主要设计到安卓中的2D绘图部分，主要用到的是Canvas，使用到的主要技术可以参考下面两篇文章：  安卓自定义View进阶 - Canvas之绘制图形  安卓自定义View进阶 - Canvas之画布操作绘制太极1.定义画笔由于太极图像由黑白两色构成，为了方便就定义了两个画笔，分别绘制黑色和白色。private ...&hellip;</p>
          <div class="post-list__meta"><time datetime="2015-12-26 00:00:00 +0800" class="post-list__meta--date date">2015-12-26</time> &#8226; <span class="post-list__meta--tags tags">CustomView</span> <a class="btn-border-small" href=/customview/taiji>继续阅读</a></div>
          <hr class="post-list__divider" />
          
      </li>
    
    
    
      <li>
          <!--正常文档-->
          
          <h2 class="post-list__post-title post-title"><a href="/course/UsePlantUMLInAS(Win)" title="访问 在AndroidStudio中使用PlantUML(for Win)">在AndroidStudio中使用PlantUML(for Win)</a></h2>
          <p class="excerpt">点击下面切换平台:| Mac | Win| Unified Modeling Language (UML)又称统一建模语言或标准建模语言，用来描述 类（对象的）、对象、关联、职责、行为、接口、用例、包、顺序、协作，以及状态。是用来帮助自己理清众多类之间复杂关系的不二利器，也能帮助别人快速理解你的设计思路。那么，我们怎么在AndroidStudio中创建自己的UML类图呢？接下来我就教大家如何用正确的姿势创建UML类图。一.用正确的姿势安装panltUML插件1.File-&gt;Settings-&gt;Pl...&hellip;</p>
          <div class="post-list__meta"><time datetime="2015-11-30 00:00:00 +0800" class="post-list__meta--date date">2015-11-30</time> &#8226; <span class="post-list__meta--tags tags">Course</span> <a class="btn-border-small" href=/course/UsePlantUMLInAS(Win)>继续阅读</a></div>
          <hr class="post-list__divider" />
          
      </li>
    
    
    
      <li>
          <!--正常文档-->
          
          <h2 class="post-list__post-title post-title"><a href="/course/UsePlantUMLInAS(Mac)" title="访问 在AndroidStudio中使用PlantUML(for Mac)">在AndroidStudio中使用PlantUML(for Mac)</a></h2>
          <p class="excerpt">点击下面切换平台:| Mac| Win|Unified Modeling Language (UML)又称统一建模语言或标准建模语言，用来描述 类（对象的）、对象、关联、职责、行为、接口、用例、包、顺序、协作，以及状态。是用来帮助自己理清众多类之间复杂关系的不二利器，也能帮助别人快速理解你的设计思路。那么，我们怎么在AndroidStudio中创建自己的UML类图呢？接下来我就教大家如何用正确的姿势创建UML类图。一.用正确的姿势安装panltUML插件1.File-&gt;Settings-&gt;Plug...&hellip;</p>
          <div class="post-list__meta"><time datetime="2015-11-30 00:00:00 +0800" class="post-list__meta--date date">2015-11-30</time> &#8226; <span class="post-list__meta--tags tags">Course</span> <a class="btn-border-small" href=/course/UsePlantUMLInAS(Mac)>继续阅读</a></div>
          <hr class="post-list__divider" />
          
      </li>
    
    
    
      <li>
          <!--正常文档-->
          
          <h2 class="post-list__post-title post-title"><a href="/customview/CustomViewIndex" title="访问 安卓自定义View教程目录">安卓自定义View教程目录</a></h2>
          <p class="excerpt">这是一个从零起步，从入门到懵逼的自定义View教程。本教程从最基础的内容讲解，并且深入到了相关的各个细节，不论你是刚入门的菜鸟，还是有一定经验的工程师相信本系列文章都会对你有所帮助。你既可以将本教程当作学习资料来学习自定义View相关的各种知识，也可以作为工具来使用，在需要的时候查询相关的知识细节。基础篇  安卓自定义View基础 - 坐标系  安卓自定义View基础 - 角度弧度  安卓自定义View基础 - 颜色进阶篇  安卓自定义View进阶 - 分类和流程  安卓自定义View进阶 - Canvas之...&hellip;</p>
          <div class="post-list__meta"><time datetime="1970-01-03 00:00:00 +0800" class="post-list__meta--date date">1970-01-03</time> &#8226; <span class="post-list__meta--tags tags">CustomView</span> <a class="btn-border-small" href=/customview/CustomViewIndex>继续阅读</a></div>
          <hr class="post-list__divider" />
          
      </li>
    
    
  </ol>

  <hr class="post-list__divider " />

<nav class="pagination" role="navigation">
    
        <a class="newer-posts pagination__newer btn btn-small btn-tertiary" href="/page/4/#blog">&larr; 最近</a>
    
    <span class="pagination__page-number">5 / 6</span>
    
        <a class="older-posts pagination__older btn btn-small btn-tertiary" href="/page/6/#blog">更早 &rarr;</a>
    
</nav>


</div>


            <section class="footer">
    <footer>
    	<span class="footer__copyright">本站点采用<a rel="license" href="https://creativecommons.org/licenses/by-nc-nd/4.0/deed.zh" target="_blank">知识共享 署名-非商业性使用-禁止演绎 4.0 国际 许可协议</a></span>
        <span class="footer__copyright">本站由 <a href="http://www.GcsSloop.com">@GcsSloop</a> 创建，采用 <a href="https://github.com/GcsSloop/Gcs-Vno-Jekyll" target="_blank">Gcs-Vno-Jekyll</a> 作为主题。<span id="busuanzi_container_site_pv"> 总访问量 <span id="busuanzi_value_site_pv"></span> 次</span> - &copy; 2019</span>
        <span class="footer__sitemap, footer__copyright"><a href="http://www.gcssloop.com/sitemap.xml" target="_blank">Site Map</a>
        <a href="http://www.gcssloop.com/vip" target="_blank">vip</a></span>
    </footer>
</section>

        </div>
    </div>
    
    <script type="text/javascript" src="//code.jquery.com/jquery-1.11.3.min.js"></script>

<script type="text/javascript" src="/js/highlight.pack.js"></script>
<script>hljs.initHighlightingOnLoad();</script>

<script type="text/javascript" src="/js/main.js"></script>

<script>
  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');

  ga('create', 'UA-82493667-1', 'auto');
  ga('send', 'pageview');

</script>

    
  </body>

</html>
